package com.rw.advice;

import com.rw.pojo.ParamInfo;
import org.springframework.aop.MethodBeforeAdvice;

import java.lang.reflect.Method;

/**
 * @author rabit
 */
public class UpdateBefore implements MethodBeforeAdvice {

    /**
     * 前置通知的方法
     * @param method 表示切点的方法
     * @param objects 切点方法中传入的参数,参数是数组表示
     * @param o  表示的真实对象
     * @throws Throwable
     */
    @Override
    public void before(Method method, Object[] objects, Object o) throws Throwable {
        //前置方法中可能扩展参数校验功能
         // Method
//        System.out.println(objects[0]);
//        System.out.println(objects[1]);
//        String name = "李四";
//        int age = 23;
//        Object[] param = {name,age};
//        objects = param;
        //在前置通知中执行了一遍切点方法，但是真实真实的切点方法不是手动执行的，是自动执行方法
//        method.invoke(o,param);
//        ParamInfo p = (ParamInfo) objects[0];
//        p.setAge(29);
//        p.setName("王五");
        System.out.println("升级前的方法"+objects);

    }
}
